package com.project.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.LogBean;
import com.project.bean.PowerBean;
import com.project.bean.RoleBean;
import com.project.service.ILogService;
import com.project.service.IRoleService;
import com.project.service.IUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

@RestController
@RequestMapping("role")
@Api(tags = "角色控制层")
public class RoleController {
    @Autowired
    private IRoleService roleService;
    @Autowired
    private IUserService userService;

    @ApiOperation(value = "查询所有角色信息")
    @GetMapping("findRoleAll")
    public List<RoleBean> findRoleAll() {
        return roleService.findRoleAll();
    }
    /**
     * 根据角色Id集合查询权限
     * 根据角色Id集合查询权限，权限去重
     * @param roleIdList 角色Id集合
     * @return 权限集合
     */
    @ApiOperation(value = "根据角色Id集合查询权限")
    @GetMapping("findByRoleIdList")
    public List<PowerBean> findByRoleIdList(List<Integer> roleIdList){
        return userService.findByRoleIdList(roleIdList);
    }

    /**
     * 分页查询所有角色信息
     * @param pageNO 页码
     * @return 分页对象
     */
    @ApiOperation(value = "分页查询所有角色信息")
    @GetMapping("cutByItem")
    public IPage<RoleBean> cutByItem(Integer pageNO){
            return roleService.cutByItem(pageNO);
    }

    /**
     * 添加角色
     * @param roleName 角色名称
     * @param powerIdList 权限id集合
     */
    @ApiOperation(value = "添加角色")
    @PostMapping("addRole")
   public String addRole(String roleName,List<Integer> powerIdList){
       roleService.addRole(roleName, powerIdList);
       return "ok";
   }

    /**
     * 删除角色
     * 1、删除该角色拥有的权限信息（角色权限中间表记录）
     * 2、删除该角色拥有的用户信息（用户角色中间表记录)
     * 3、按角色ID删除角色
     * @param roleId 角色ID
     */
    @ApiOperation(value = "删除角色")
    @DeleteMapping("delRole")
   public String delRole(Integer roleId){
        roleService.delRole(roleId);
        return "ok";
    }

    /**
     * 查看角色
     * 根据角色id查看角色信息，并查看角色拥有的权限
     * @param roleId 角色id
     * @return 角色对象
     */
    @ApiOperation(value = "查看角色并查看角色拥有的权限")
    @GetMapping("findById")
   public RoleBean findById(Integer roleId){
        return roleService.findById(roleId);
    }

    /**
     * 修改角色权限
     * @param id 角色id
     * @param powerId 权限id集合
     */
    @ApiOperation(value = "修改角色权限")
    @PutMapping("update")
   public String update(Integer id,List<Integer> powerId){
            roleService.update(id, powerId);
            return "ok";
    }

}
